package dj.service;

import java.util.List;
import java.util.Map;

import dj.model.Tuser;
import dj.model.UserExtend;
import dj.pageModel.Puser;
import dj.pageModel.TreeNode;

public interface UserService {

	/**
	 * 用户注册
	 * 
	 * @param user
	 */
	public void save(Puser user);

	/**
	 * 删除用户
	 * 
	 * @param user
	 */
	public void delete(Tuser user);

	/**
	 * 获取用户数量
	 * 
	 * @param userType
	 * @return
	 */
	public long getUserNum(Map<String, Object> params, Map<String, String> conditions);

	/**
	 * 分页获取用户
	 * 
	 * @param userType
	 * @param page
	 * @param rows
	 * @return
	 */
	public List<Tuser> getUserPagination(Map<String, Object> params, Map<String, String> conditions, int page, int rows);
	
	/**
	 * 根据人员获取其下面的企业树
	 * @param user
	 * @return
	 */
	public List<TreeNode> getCompanyTree(Puser user);

	/**
	 * 更新用户信息
	 * 
	 * @param puser
	 */
	public void updateUserInfo(Puser puser);

	/**
	 * 根据tuser更新用户信息
	 * 
	 * @param tuser
	 */
	public void updateUserInfo(Tuser tuser);

	/**
	 * 插入或更新用户扩张属性
	 * 
	 * @param userExtend
	 */
	public void saveOrUpdateExtend(UserExtend userExtend);

	/**
	 * 用户登录
	 * 
	 * @param user
	 * @return
	 */
	public Puser login(Puser user);

	/**
	 * 根据值查询匹配的用户名和昵称
	 * 
	 * @return
	 */
	public Map<String, Object> getUserItemByName(Puser user);

	/**
	 * 获取所有用户
	 * 
	 * @return
	 */
	public List<Tuser> getAllUser();

	/**
	 * 获取所有用户
	 * 
	 * @param isInit
	 *            是否是初始化，如果为true则从数据库中加载，否则根据配置文件加载
	 * @return
	 */
	public List<Tuser> getAllUser(boolean isInit);

	/**
	 * 根据用户id获取用户
	 * 
	 * @param id
	 * @return
	 */
	public Tuser getUserById(String id);

	/**
	 * 根据用户名获取用户
	 * 
	 * @param name
	 * @return
	 */
	public Tuser getUserByName(String name);

	/**
	 * 如果从内存加载用户，则把用户放到内存中
	 * 
	 * @param user
	 */
	public void setUser(Tuser user);

	/**
	 * 初始化用户
	 */
	public void initUserMap();

}
